<?php

	session_start();

	$image = imagecreatetruecolor(100, 30);//新建一个真彩色图 ， 默认黑色
    $bgcolor = imagecolorallocate($image, 255, 255, 255);//为一幅图像分配颜色 , 第二个参数为rgb
    imagefill($image, 0, 0, $bgcolor);//区域填充 

    $captch_code = '';

    //生成验证码内容 —— 字母和数字混合
    for ($i=0; $i < 4; $i++) { 
    	$fontsize = 6;
    	$fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120),rand(0,120)); //颜色设置成随机 ,0-120颜色较深

    	$data = 'qwertyuipkjhgfdsaxcvbnm9876543';
    	$fontcontent = substr($data, rand(0,strlen($data)),1); //返回字符串的一部分 , 第二个参数是要截取的范围 ，第三个参数是每次截取几个
    	$captch_code .= $fontcontent;

    	$x = ($i*100/4) + rand(5,10);  //数字的坐标 ，避免重叠
    	$y = rand(5,10);

    	imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); //水平绘制一个字符串
    }

    $_SESSION['authcode'] = $captch_code;  //将图片中的验证码内容储存到$_SESSION变量中，用于比较

    //生成干扰点
    for ($i=0; $i < 200; $i++) { 
    	$pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
    	imagesetpixel($image, rand(1,99), rand(1,29) , $pointcolor);//设置单个像素
    }
    //生成干扰线
    for ($i=0; $i < 3; $i++) { 
    	$linecolor = imagecolorallocate($image, rand(80,220),rand(80,220),rand(80,220));
    	imageline($image, rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);//画一条线
    }


	header('content-type:image/png');//表明输出内容的格式 ,输出数据前必须先用 header
	imagepng($image);//以 PNG 格式将图像输出到浏览器或文件
	imagedestroy($image);  //销毁资源
